home *** CD-ROM | disk | FTP | other *** search
- @Part(MUSICKERMIT,root="kuser")
- @string(-musicversion="4.2.0")
- @string(-musicdate="90/3/13")
- @Chapter<IBM MUSIC/SP KERMIT>
- @Begin<Description,Leftmargin +15,Indent -15,spread 0>
- @i(Program:)@\John Chandler (Harvard/Smithsonian Center for
- Astrophysics); contributions from
- Pierre Goyette (McGill U),
- Va@ccd()e Kundak@ccd()i and
- Daphne Tzoar (Columbia U),
- Bob Shields (U. Maryland),
- Greg Small (UC Berkeley), Clark Frazier (Harvard Bus. Sch.),
- Bob Bolch and Steve Blankinship (Triangle),
- Andr@eac() Pirard (U. Li@egr()ge)
-
- @i(Language:)@\IBM/370 Assembler
-
- @i(Documentation:)@\Pierre Goyette
-
- @i(Version:)@\@value(-musicversion) (@value<-musicdate>)
-
- @i(Date: )@\1990 March
- @end<Description>
-
- @subheading<Kermit-MUSIC Capabilities At A Glance:>
- @begin<format,leftmargin +2,above 1,below 1>
- @tabclear()@tabset(3.5inches,4.0inches)
- Local operation:@\No
- Remote operation:@\Yes
- Transfers text files:@\Yes
- Transfers binary files:@\Yes
- Wildcard send:@\Yes
- @q(^X/^Z) interruption:@\Yes (through micro)
- Filename collision avoidance:@\Yes
- Can time out:@\Yes (line mode only)
- 8th-bit prefixing:@\Yes
- Repeat count prefixing:@\Yes
- Alternate block checks:@\Yes
- Terminal emulation:@\No
- Communication settings:@\No
- Transmit BREAK:@\No
- Packet logging:@\Yes
- Transaction logging:@\Yes
- Session logging:@\No
- Raw transmit:@\Yes (no prompts)
- Sliding window:@\No
- Long packets:@\Yes
- Act as server:@\Yes
- Talk to server:@\Yes
- Advanced server functions:@\Yes
- Advanced commands for servers:@\Yes
- Local file management:@\Yes
- Handle Attribute Packets:@\Yes
- Command/init files:@\Yes
- Command macros:@\No
- @end<format>
-
- @subheading<MUSIC Specifics of Kermit-370:>
- @begin<format,leftmargin +2,above 1,below 1>
- @tabclear()@tabset(3.5inches,4.0inches)
- Global INIT file:@\@q(SYSTEM.KERMINI)
- User INIT file:@\@q(KERMIT.INI)
- Debug packet log:@\@q(KERMIT.LOG)
- Server reply log:@\@q(KERMIT.REPLY)
- Maximum packet size:@\1913 (7171), 230 (TTY)
- Maximum disk LRECL:@\32767
- @end<format>
-
- @Index(IBM)
- @Index(MUSIC/SP)@Index(TTY)@Index(Series/1)
- Kermit-MUSIC is a member of the generic Kermit-370 family
- and shares most of the features and capabilities of the group.
- As its name implies, Kermit-MUSIC is the
- variant of Kermit-370 that runs under the MUSIC/SP operating system.
- The primary documentation for Kermit-MUSIC is actually
- the chapter on Kermit-370 (entitled IBM 370 Kermit), which
- describes general properties; the present chapter assumes the
- reader is familiar with that material.
- Only the details specific to MUSIC operation will
- be discussed here, e.g., command syntax relating to the
- MUSIC file system or commands not offered in general by Kermit-370.
-
- @Section<The MUSIC/SP File System>
-
- The features of the MUSIC file system of greatest interest to Kermit
- users are the format of file specifications (or @i<filespecs>)
- and the concept of records.
- The latter is described in the Kermit-370 chapter.
-
- The MUSIC @i<filespec> (called a Save File) takes the form
- @example<[code:]filename>
- The filename can be up to 17 characters in length and consists of one or
- more substrings joined by periods. The substrings can contain
- any of the following characters:
- @example(A through Z, 0 through 9, national characters # $ @@)
- The only restriction is that the first substring must start with a
- letter or a national character.
- You may also prefix the filename with a 4-digit code if you
- have enough privileges.
- @Index(Default Code)
- By default, the "working directory" will be set to the your
- signon code.
- All files on this code can be accessed directly.
- If you have enough privileges and wish to transfer files
- to or from a MUSIC code other than your signon code, you may
- change the "working directory" to the new code.
-
- @Index(Wildcards)
- MUSIC/SP allows a group of files to be specified in a single
- @i(filespec) by including the special "wildcard" characters
- @qq<*> and @qq<?>.
- A @qq<*> matches any string of characters (even a null
- string) from the current position to the end of the field;
- a @qq<?> matches any single character.
- It is important to remember that the period is part of the filename.
- Unlike a PC, the file specification @qq<*> will
- match all filenames.
- Here are some examples:
-
- @Begin(Description,spread 0.5,leftmargin +14, indent -12)
- @q<*.COBOL>@\All files of that end with @q<.COBOL>
-
- @q<F*>@\All files whose names start with F.
-
- @q<?>@\All files with one-character filename.
- @End(Description)
-
- MUSIC files, like those in other IBM 370 systems, are record-oriented
- (see the introduction to the Kermit-370 chapter).
- In particular, MUSIC files are characterized by record
- format (RECFM), which may be fixed-length or varying-length,
- and by maximum record length (LRECL).
- The size of record blocks is irrelevant, however,
- because MUSIC performs the blocking and deblocking operations
- automatically and transparently, including the spanning of records
- across block boundaries.
- Records in MUSIC files may be up to 32767 bytes long.
- A third record format, namely, undefined-length, is possible in MUSIC,
- but is rarely used and is not supported by Kermit-MUSIC at present.
-
- Another file system feature of occasional interest is the means of
- reporting errors.
- When Kermit-MUSIC encounters a disk error, it attempts to prepare
- an explanatory message for inclusion in the STATUS report.
- The explanations can be found in the MUSIC reference manual under the
- MFIO Error Codes section.
- @Index(Error codes)
-
- @section<Program Operation>
-
- @Index(Initialization files)
- At startup time, Kermit-MUSIC looks for two initialization
- files, @q(*COM:SYSTEM.KERMINI) and @q(KERMIT.INI).
- If either of or both of these files exist,
- they will be read and executed.
- If they do not exist on your code, Kermit will still attempt to locate
- the public verion of the system file.
- The file @q(SYSTEM.KERMINI) should be saved as a PUBLIC file
- by a systems programmer, preferably the same code where
- the Kermit executable module is kept.
- The file @q(KERMIT.INI) can be maintained by the user on any code.
-
- One important distinction between Kermit-MUSIC and other Kermits
- is that a program running under MUSIC/SP is unable to
- interrupt a read on the terminal
- if you are connected through a 7171 or
- Series/1 protocol converter.
- This means that the MUSIC variant of Kermit cannot
- time out after sending a packet on such devices.
- The only way to time out is from the other side:
- typing a carriage return to the local Kermit causing it to retransmit
- its last packet, or an automatic timeout as provided by most other
- Kermits.
-
- @Index(TTY)@Index(Flow control)@Index(Handshake)
- If you are connecting to MUSIC through a 7171 or @q(Series/1)
- protocol converter, then no handshaking is required since
- Kermit-MUSIC can control the data sent to the micro Kermit.
- But if you are connected as a @qq(TTY) terminal (through a 370x
- type line), then you must enable handshaking on the micro Kermit.
- This is because the MUSIC/SP system will add an XON (X'11')
- character to the end of every packet sent.
- The micro Kermit must not reply with the next packet before
- the XON character is received.
- Usually the command @qq(SET HANDSHAKE XON) or @qq(SET HANDSHAKE 17)
- on the micro Kermit will do this.
-
- @subheading(Interactive Operation:)
-
- To run Kermit-MUSIC interactively, invoke the program from MUSIC by
- typing @q<KERMIT>.
- When you see the prompt,
- @example(Kermit-MUSIC>)
- you may type a Kermit subcommand.
- When the subcommand completes, Kermit issues another prompt.
- The cycle repeats until you exit from the program.
- For example:
- @Begin(Example)
- @ux(KERMIT)
-
- Kermit-MUSIC Version @value(-musicversion) (@value<-musicdate>)
- Enter ? for a list of valid commands
-
- Kermit-MUSIC>@ux(send foo.*)
-
- @i(Files with prefix FOO. are sent)
-
- Kermit-MUSIC>@ux(receive test.spss)
-
- @i(File is received and called TEST.SPSS)
-
- Kermit-MUSIC>@ux(exit)
- @end(example)
-
- @subheading(Command Line Invocation:)
-
- Kermit-MUSIC may also be invoked with a command line argument from MUSIC.
- The argument is interpreted as a subcommand to be executed
- by Kermit after completion of the initialization.
- For instance:
- @Begin(Example,below 0.5)
- @ux(KERMIT send test.fortran)
- @End(Example)
- or
- @Begin(Example,above 0.5)
- @ux(KERMIT server)
- @End(Example)
-
- Kermit will exit and return to MUSIC after completing the specified
- subcommand.
-
- @subheading(Server mode:)
-
- Command execution in server mode is different in several respects
- from normal operation. First of all, some Kermit subcommands
- are not allowed (see the list of subcommands in the Kermit-370 chapter).
- Moreover, command errors always terminate any active TAKE file.
-
- @Section<Kermit-MUSIC Subcommands>
-
- Kermit-MUSIC supports all the subcommands described in the Kermit-370
- chapter, plus one more: @qq(MUSIC), which is a synonym for the generic
- subcommand @qq(HOST).
- This section concentrates on
- the subcommands that have special form or meaning for Kermit-MUSIC.
- These are ordered alphabetically.
- See the chapter on Kermit-370 for further details.
-
- @Heading(The CWD Subcommand)
- @Index(Default Code)@Index(CWD)
-
- Syntax:@q< CWD @i(code)>
-
- The CWD (Change Working Directory)
- subcommand establishes a new default code.
- @i(code) may be any valid 4-digit MUSIC code.
- Subsequent file transfers take place preferentially to
- and from the default code.
- The initial code is the user's signon code.
-
- @Heading(The DIRECTORY Subcommand)
- @Index(DIRECTORY)
-
- Syntax:@q< DIRECTORY [@i(filespec)]>
-
- Under Kermit-MUSIC, the DIRECTORY subcommand is similar
- to the MUSIC LIBRARY command.
- DIRECTORY will also display the number of lines in a file.
-
- @Heading(The HELP Subcommand)
- @Index(HELP)
-
- Syntax:@q< HELP>
-
- This subcommand displays information on the use of Kermit-MUSIC.
-
- @Heading(The MUSIC Subcommand)
-
- Syntax:@q< MUSIC @i(text of command)>
-
- Currently, MUSIC does not support the execution of host commands
- under Kermit-MUSIC.
- However, the MUSIC commands LIBRARY, PURGE, RENAME, COPY, and LIST
- are simulated by Kermit itself, thus providing a set of
- subcommands for managing
- local files. The subcommand MUSIC is synonymous with the generic
- subcommand HOST.
-
- @Heading<The RECEIVE Subcommand>
-
- @Index(RECEIVE)
- Syntax:@q< RECEIVE [@i(filespec)]>
-
- The RECEIVE subcommand tells Kermit to receive a file or file group
- from the other system.
- You should then issue a SEND subcommand to the other Kermit.
-
- If the optional @i(filespec) is omitted, Kermit-MUSIC will use the
- name(s) provided by the other Kermit.
- If that name is not a legal MUSIC file name, Kermit-MUSIC will
- delete excess characters and will change illegal characters to
- dollar signs.
- A @i(filespec) in the subcommand indicates what name the incoming file
- should be given.
- Wildcards may not be used.
- If the optional @i(filespec) is provided,
- but more than one file arrives, the first file will be stored under
- the given @i(filespec), and the remainder will be stored under
- their own names on the default code.
-
- For purposes of folding and truncation, the maximum record length for
- a received file is 32767 if RECFM is V and "LRECL" if RECFM is F.
- @Index(Truncation)@Index(Folding)
-
- @Index(Filename collision)
- If the incoming file has the same name as an existing file, the action
- taken depends on the FILE COLLISION setting. The possible settings
- and their meanings are given in the Kermit-370 chapter. Two of the
- settings (BACKUP and RENAME) require that
- Kermit-MUSIC change the incoming name
- so as not to obliterate the pre-@|existing file.
- It attempts to find a unique name by successively modifying
- the original and checking for the existence of such a file at each step.
- The procedure begins by truncating the filename to fifteen
- characters if necessary, and then appending @qq($0).
- If a file by that name exists, Kermit then replaces the @qq(0)
- with a @qq(1).
- It continues in this manner up to @qq(9), and if an unused name cannot
- be found, the transfer fails.
-
- @Heading<The SEND Subcommand>
- @Index(SEND)
-
- Syntax:@q{ SEND [@i(filespec)[<@i(options)>] [@i(foreign-filespec)]][, ...]}
-
- The SEND subcommand causes a file or file group to be sent from MUSIC
- to the Kermit on the other system.
- Kermit-MUSIC will remove any code prefix for the file header of the
- outgoing file.
- @Index(Wildcards)
- The @i(filespec) may contain the wildcard characters @qq<*> or @qq<?>.
- If it does, then all matching
- files will be sent. For details on the @i(options), see the chapter on
- Kermit-370. There must be no blanks between the @i(filespec) and the
- @i(options), if any.
-
- The @i(foreign-filespec), if any, is used for the file header of the
- outgoing file, replacing the usual filename copied from the
- MUSIC @i(filespec).
- If wildcards are present in the @i(filespec),
- then no @i(foreign-filespec) should be specified.
-
- @Heading<The SET Subcommand>
- @Index(SET)
-
- Syntax:@q< SET @i(parameter) [@i(value)]>
-
- The SET subcommand establishes or modifies various
- parameters controlling file transfers.
- The following SET parameters are available in Kermit-MUSIC,
- but not in Kermit-370 in general:
- @Begin(Format,spread 0)
- @tabclear()@tabset(2.0inches)
- DELIM@\Line delimiter for entering multiple commands.
- DESTINATION@\Default Code.
- FILE
- LRECL@\Logical Record length for incoming file.
- RECFM@\Record format for incoming files.
- @End(format)
-
- @Subheading(SET DELIM)
-
- Syntax:@q< SET DELIM [@i(letter)]>
-
- @Index(Line delimiter)
- This sets (or clears) a command line delimiter for interactive
- Kermit subcommands. Each occurrence of the delimiter character in
- the command buffer read from the terminal is treated as the start of
- a new subcommand. The initial value is a blank, i.e., no delimiter.
-
- @Subheading<SET DESTINATION>
- @Index(Default Code)
-
- Syntax:@q< SET DESTINATION @i(code)>
-
- This subcommand is equivalent to the CWD subcommand (@i[q.v.]).
-
- @Subheading(SET FILE LRECL)
-
- Syntax:@q< SET FILE LRECL @i(number)>
-
- This sets the logical record length for incoming files to a @i(number)
- from 1 to 32767 (32K-1).
- This variable is used only for fixed format and binary files.
- The default is 80.
-
- @Subheading<SET FILE RECFM>
-
- Syntax:@q< SET FILE RECFM @i(option)>
-
- This subcommand sets the record format to use for incoming files.
- Valid @i<options> are "Fixed" and "Variable" (the default).
- Fixed-format records are padded, folded, or truncated, as needed,
- to the current LRECL. Note: these two formats correspond to FC and VC
- in standard MUSIC nomenclature. MUSIC formats F, V, and U are not
- supported.
-
- @Heading(The SPACE Subcommand)
- @Index(SPACE)
-
- Syntax:@q< SPACE>
-
- This subcommand displays the storage allocation on the default code.
- The available space is calculated by subtracting the current allocated
- space from the total space available to the user's code.
-
- @Section<How to build an executable version of Kermit-MUSIC>
-
- Before attempting to build Kermit-MUSIC, look in the
- Kermit distribution under IKMKER for an
- installation document, as well as "beware", help,
- and update files, and read them first.
- They will probably contain information that is more
- current and more detailed than what you see here.
-
- Kermit-MUSIC consists at present of a few small jobs that (a)
- build GUPI (Generic Update Program), (b) use
- GUPI to apply the current fixes to the base code, and (c)
- assemble and link
- the updated Kermit source.
- The source for Kermit and GUPI itself is in many pieces,
- some generic for Kermit-370 and some specific to MUSIC.
- All the necessary pieces are sequenced in
- columns 73-80 so that the numbers form a strictly increasing
- sequence when the pieces are correctly "pasted" together.
- It is important to preserve the original sequence numbers so that
- updates can be applied to the source.
-
- To create a runnable version:
-
- @begin<format,leftmargin +2,above 1,below 1>
- @end<format>
- @tabclear()@tabset(3.5inches,4.0inches)
-
- @begin(enumerate,spread 0.5)
- Collect the following @qq(ASM) files from the Kermit distribution onto
- the code $KRM with @q<RECFM FC> and @q<LRECL 80>: IK0DOC, IK0MAC,
- IKMMAC, IK0DEF, IK0MAI, IK0COM, IK0CMD, IKMUTL, IK0PRO, IK0GUP,
- and IKMGUP.
- The files must have an extension of ".S".
-
- Assemble and link the Generic Update Program GUPI, producing
- @q($KRM:GUPI.LMOD).
- Before assembling the GUPI program, you must change the IK0GUP module.
- Edit the file $KRM:IK0GUP.S and convert all COPY pseudo-instructions
- into macro invocations.
- This is easily achieved by removing the word "COPY"
- from in front of the copy block's name.
- There are only 5 occurences of this and they are all in column 10.
- The source for GUPI consists of the combination
- IK0MAC, IKMMAC, IKMGUP, and IK0GUP.
-
- Build the base Kermit source so that you can apply the
- modifications to it.
- Merge the source files in the order
- IK0DOC, IK0MAC, IKMMAC, IK0DEF, IK0MAI, IK0COM, IK0CMD, IKMUTL, IK0PRO,
- and save the result as @q($KRM:KERMIT.BASE.S).
-
- Apply the updates using GUPI. Note: this operation requires a region
- of at least 1024K.
- The following command will apply the fixes to the source
- module $KRM:KERMIT.BASE.S using the update file $KRM:IKMKER.UPD
- and save the updated source in $KRM:KERMIT.S.
- @example(GUPI $KRM:KERMIT.BASE.S $KRM:IKMKER.UPD $KRM:KERMIT.S)
-
- Assemble the Kermit source and
- link the object deck together with
- MATCH and MFINDX to produce @q($KRM:KERMIT.LMOD).
-
- Save the following jobstream in the file $KRM:KERMIT
- This will execute the KERMIT program with the proper system
- parameters.
- @begin<format,leftmargin +2,above 1,below 1>
- /SYS NOPRINT,REGION=256
- /FILE LMOD N($KRM:KERMIT.LMOD) SHR
- /LOAD XMON
- KERMIT
- @end<format>
-
- Kermit-MUSIC requries the LSCAN privilege since it does a
- save library scan directly.
- You must modify either the system module LOOKUP or the macro
- invoked by LOOKUP called $MCM:USERTBL.M.
- Add the line
- @example<FILNAM '$KRM:KERMIT',(LSCAN,0)>
- to either of the two files.
- Reassemble the module LOOKUP and make sure that the new
- object deck is used when rebuilding the nucleus.
- If you do not give Kermit this privilege, the program will
- abend on user codes that do not have LSCAN.
- @end(enumerate)
-
- @Index(Initialization files)@Index(Translation)
- Since Kermit-MUSIC drives the I/O directly for both @qq(TTY) and
- @qq(SERIES1) devices, your site's
- ASCII/EBCDIC translation tables will not affect Kermit-MUSIC
- in file transfer mode.
-
- @Section<What's New>
- Below is a list of the MUSIC-specific updates in Version
- @value(-musicversion) of
- Kermit-MUSIC added since the previous major release,
- Version 4.1, in February 1989.
- For a list of generic additions, see
- the Kermit-370 chapter.
-
- @begin(enumerate,spread 0.5)
- Correction of problem in SERIES1-type transfer I/O with large blocks.
-
- @end(enumerate)
-
- @Section(What's Missing)
-
- Work on Kermit-MUSIC will continue. Features that need to be
- improved or added include:
- @begin(itemize)
- Add support for IBM 3174 AEA transparent mode.
-
- Allow timeouts so Kermit-MUSIC does not wait forever if a packet does
- not arrive in a timely fashion. This is not possible under MUSIC at
- present for I/O through a protocol converter.
-
- Implement file archiving.
-
- Support execution of Music commands from Kermit or the remote
- Kermit.
-
- Add a SET REPEAT subcommand.
- @end(itemize)
-
- Anyone interested in working on these or other improvements should first
- get in touch with the Center for Computing Activities at Columbia
- University to find out if someone else has already begun a similar
- project (and, if so, who).
-